package com.zhangfb95.crosschain.protocol.exc;

import com.zhangfb95.crosschain.infra.model.Result;
import com.zhangfb95.crosschain.protocol.exc.request.GetBlockByNumberExcReq;
import com.zhangfb95.crosschain.protocol.exc.request.GetHeightExcReq;
import com.zhangfb95.crosschain.protocol.exc.request.GetTxByIdExcReq;
import com.zhangfb95.crosschain.protocol.exc.request.QueryExcReq;
import com.zhangfb95.crosschain.protocol.exc.request.SendExcReq;
import com.zhangfb95.crosschain.protocol.exc.response.GetBlockByNumberExcRes;
import com.zhangfb95.crosschain.protocol.exc.response.GetHeightExcRes;
import com.zhangfb95.crosschain.protocol.exc.response.GetTxByIdExcRes;
import com.zhangfb95.crosschain.protocol.exc.response.ListChainPathExcRes;
import com.zhangfb95.crosschain.protocol.exc.response.QueryExcRes;
import com.zhangfb95.crosschain.protocol.exc.response.SendExcRes;
import com.zhangfb95.crosschain.protocol.exc.response.TestExcRes;

/**
 * @author zhangfubing
 * @since 2023/10/19
 */
public interface ExcChainService {

    Result<TestExcRes> test();

    Result<ListChainPathExcRes> listChainPath();

    Result<GetHeightExcRes> getHeight(GetHeightExcReq req);

    Result<GetBlockByNumberExcRes> getBlockByNumber(GetBlockByNumberExcReq req);

    Result<GetTxByIdExcRes> getTxById(GetTxByIdExcReq req);

    Result<QueryExcRes> query(QueryExcReq req);

    Result<SendExcRes> send(SendExcReq req);

}
